# vim: expandtab:ts=4:sw=4
import numpy as np


class Detection(object):
    """
    This class represents a bounding box detection in a single image.此类表示单个图像中的边界框检测。

    Parameters参数
    ----------
    tlwh : array_like
        Bounding box in format `(x, y, w, h)`.格式为“（x，y，w，h）”的边界框。
    confidence : float
        Detector confidence score.探测器置信度得分。
    feature : array_like
        A feature vector that describes the object contained in this image.描述此图像中包含的对象的特征向量。

    Attributes属性
    ----------
    tlwh : ndarray
        Bounding box in format `(top left x, top left y, width, height)`.格式为“（左上角x，左上角y，宽度，高度）”的边界框。
    confidence : ndarray
        Detector confidence score.探测器置信度得分。
    feature : ndarray | NoneType
        A feature vector that describes the object contained in this image.描述此图像中包含的对象的特征向量。

    """

    def __init__(self, tlwh, confidence, feature):
        self.tlwh = np.asarray(tlwh, dtype=np.float)
        self.confidence = float(confidence)
        self.feature = np.asarray(feature, dtype=np.float32)

    def to_tlbr(self):
        """Convert bounding box to format `(min x, min y, max x, max y)`, i.e.,
        `(top left, bottom right)`.
        将边界框转换为格式`（min x，min y，max x，max y）`，即`（左上，右下）`。
        """
        ret = self.tlwh.copy()
        ret[2:] += ret[:2]
        return ret

    def to_xyah(self):
        """Convert bounding box to format `(center x, center y, aspect ratio,
        height)`, where the aspect ratio is `width / height`.
        将边界框转换为格式`（中心x，中心y，宽高比，高度）`，纵横比为“宽度/高度”。
        """
        ret = self.tlwh.copy()
        ret[:2] += ret[2:] / 2
        ret[2] /= ret[3]
        return ret
